import { Attachment } from './Attachment'

/**
 * 委外加工实体类型定义
 */
export interface OutsourcingProcessing {
  /** 委外加工ID */
  id: number;
  
  /** 生产单号 */
  productionOrderNumber: string;
  
  /** 生产主题 */
  productionTheme: string;
  
  /** 单据日期 */
  documentDate: string;
  
  /** 生产类型 */
  productionType: string;
  
  /** 关联项目 */
  relatedProject: string;
  
  /** 所在部门 */
  department: string;
  
  /** 委托单位 */
  entrustingUnit: string;
  
  /** 联系电话 */
  contactPhone: string;
  
  /** 联系人 */
  contactPerson: string;
  
  /** 负责人 */
  responsiblePerson: string;
  
  /** 销售订单ID */
  salesOrderId?: number;
  
  /** 销售订单号 */
  salesOrderNumber?: string;
  
  /** 销售订单主题 */
  salesOrderSubject?: string;
  
  /** 备注 */
  remarks?: string;
  
  /** 状态 */
  status: string;
  
  /** 创建时间 */
  createTime: string;
  
  /** 修改时间 */
  updateTime?: string;
  
  /** 修改人 */
  updateName?: string;
  
  /** 生产物品列表 */
  productionItems?: ProductionItem[];
  
  /** 消耗物品列表 */
  consumeItems?: ConsumeItem[];
  
  /** 附件列表 */
  attachments?: Attachment[];
}

/**
 * 委外加工新增/更新DTO - 用于新增和更新操作
 */
export interface OutsourcingProcessingAddUpdateDTO {
  /** 委外加工ID */
  id: number;
  
  /** 生产单号 */
  productionOrderNumber: string;
  
  /** 生产主题 */
  productionTheme: string;
  
  /** 单据日期 */
  documentDate: string;
  
  /** 生产类型 */
  productionType: string;
  
  /** 关联项目 */
  relatedProject: string;
  
  /** 所在部门 */
  department: string;
  
  /** 委托单位 */
  entrustingUnit: string;
  
  /** 联系电话 */
  contactPhone: string;
  
  /** 联系人 */
  contactPerson: string;
  
  /** 负责人 */
  responsiblePerson: string;
  
  /** 销售订单ID */
  salesOrderId?: number;
  
  /** 销售订单号 */
  salesOrderNumber?: string;
  
  /** 销售订单主题 */
  salesOrderSubject?: string;
  
  /** 备注 */
  remarks?: string;
  
  /** 状态 */
  status: string;
  
  /** 创建时间 */
  createTime: string;
  
  /** 修改时间 */
  updateTime?: string;
  
  /** 修改人 */
  updateName?: string;
  
  /** 生产物品列表（简化DTO） */
  productionItems?: ProductionItemDTO[];
  
  /** 消耗物品列表（简化DTO） */
  consumeItems?: ConsumeItemDTO[];
  
  /** 附件列表 */
  attachments?: Attachment[];
}

/**
 * 生产物品DTO - 用于新增和更新操作，只包含必要字段
 */
export interface ProductionItemDTO {
  /** 物品ID */
  itemId: number;
  
  /** 计划生产数量 */
  plannedQuantity: number;
  
  /** 备注 */
  remark?: string;
}

/**
 * 生产物品显示DTO - 用于显示，包含完整物品信息
 */
export interface ProductionItem {
  /** 物品ID */
  itemId: number;
  
  /** 物品编码 */
  itemCode: string;
  
  /** 物品名称 */
  itemName: string;
  
  /** 规格 */
  specification: string;
  
  /** 单位 */
  unit: string;
  
  /** 物品类型 */
  itemType: string;
  
  /** 物品分类 */
  itemClassification: string;
  
  /** 品牌 */
  brand: string;
  
  /** 计划生产数量 */
  plannedQuantity: number;
  
  /** 备注 */
  remark?: string;
}

/**
 * 消耗物品DTO - 用于新增和更新操作，只包含必要字段
 */
export interface ConsumeItemDTO {
  /** 物品ID */
  itemId: number;
  
  /** 仓库ID */
  warehouseId: string;
  
  /** 计划消耗数量 */
  plannedQuantity: number;
  
  /** 主单位数量 */
  number: number;
  
  /** 备注 */
  remark?: string;
}

/**
 * 消耗物品显示DTO - 用于显示，包含完整物品信息
 */
export interface ConsumeItem {
  /** 物品ID */
  itemId: number;
  
  /** 物品编码 */
  itemCode: string;
  
  /** 物品名称 */
  itemName: string;
  
  /** 规格 */
  specification: string;
  
  /** 单位 */
  unit: string;
  
  /** 物品类型 */
  itemType: string;
  
  /** 物品分类 */
  itemClassification: string;
  
  /** 品牌 */
  brand: string;
  
  /** 库存 */
  inventory: number;
  
  /** 仓库ID */
  warehouseId: string;
  
  /** 计划消耗数量 */
  plannedQuantity: number;
  
  /** 主单位数量 */
  number: number;
  
  /** 备注 */
  remark?: string;
}

/**
 * 销售订单类型定义
 */
export interface SalesOrder {
  /** 销售订单ID */
  id: number;
  
  /** 销售订单号 */
  salesOrderNumber: string;
  
  /** 销售订单主题 */
  salesOrderSubject: string;
  
  /** 客户名称 */
  customerName: string;
  
  /** 销售日期 */
  salesDate: string;
  
  /** 订单状态 */
  purchaseStatus: string;
  
  /** 物品概要 */
  itemSummary: string;
}

/**
 * 物品类型定义
 */
export interface Item {
  /** 物品ID */
  id: number;
  
  /** 物品编码 */
  itemCode: string;
  
  /** 物品名称 */
  itemName: string;
  
  /** 规格 */
  specification: string;
  
  /** 单位 */
  unit: string;
  
  /** 物品类型 */
  itemType: string;
  
  /** 物品分类ID */
  itemClassificationId?: number;
  
  /** 品牌 */
  brand: string;
  
  /** 库存 */
  inventory: number;
}

/**
 * 供应商类型定义
 */
export interface Supplier {
  /** 供应商ID */
  id: number;
  
  /** 供应商编号 */
  supplierNumber: string;
  
  /** 供应商名称 */
  supplierName: string;
  
  /** 公司名称 */
  companyName: string;
  
  /** 供应商类型 */
  supplierType: string;
  
  /** 供应商状态 */
  supplierStatus: string;
  
  /** 联系电话 */
  contactPhone: string;
  
  /** 联系人 */
  contactPerson: string;
  
  /** 地址 */
  address: string;
}

/**
 * 仓库类型定义
 */
export interface Warehouse {
  /** 仓库ID */
  id: number;
  
  /** 仓库编号 */
  warehouseNumber: string;
  
  /** 仓库名称 */
  warehouseName: string;
  
  /** 仓库地址 */
  address?: string;
  
  /** 仓库状态 */
  status?: string;
  
  /** 负责人 */
  manager?: string;
  
  /** 联系电话 */
  phone?: string;
}

/**
 * 项目类型定义
 */
export interface Project {
  /** 项目ID */
  id: number;
  
  /** 项目编号 */
  projectNumber: string;
  
  /** 项目名称 */
  projectName: string;
  
  /** 项目描述 */
  projectDescription: string;
  
  /** 项目状态 */
  projectStatus: string;
  
  /** 项目阶段 */
  projectPhase: string;
  
  /** 开始日期 */
  startDate: string;
  
  /** 结束日期 */
  endDate: string;
  
  /** 类别 */
  category: string;
  
  /** 项目来源 */
  projectSource: string;
  
  /** 项目预算 */
  projectBudget: number;
  
  /** 总金额 */
  totalAmount: number;
  
  /** 预估成本 */
  estimatedCost: number;
}

/**
 * 委外加工查询参数类型
 */
export interface OutsourcingProcessingQueryParams {
  /** 生产单号 */
  productionOrderNumber?: string;
  
  /** 生产主题 */
  productionTheme?: string;
  
  /** 委托单位 */
  entrustingUnit?: string;
  
  /** 联系人 */
  contactPerson?: string;
  
  /** 状态 */
  status?: string;
  
  /** 开始日期 */
  startDate?: string;
  
  /** 结束日期 */
  endDate?: string;
  
  /** 页码 */
  pageIndex: number;
  
  /** 页大小 */
  pageSize: number;
}

/**
 * 销售订单查询参数类型
 */
export interface SalesOrderQueryParams {
  /** 搜索文本 */
  searchText?: string;
  
  /** 客户名称 */
  customerName?: string;
  
  /** 销售日期 */
  salesDate?: string;
  
  /** 订单状态 */
  purchaseStatus?: string;
  
  /** 页码 */
  pageIndex: number;
  
  /** 页大小 */
  pageSize: number;
}

/**
 * 物品查询参数类型
 */
export interface ItemQueryParams {
  /** 搜索文本 */
  searchText?: string;
  
  /** 物品类型 */
  itemType?: string;
  
  /** 物品分类ID */
  itemClassificationId?: number;
  
  /** 库存状态 */
  inventoryStatus?: string;
  
  /** 页码 */
  pageIndex: number;
  
  /** 页大小 */
  pageSize: number;
}

/**
 * 供应商查询参数类型
 */
export interface SupplierQueryParams {
  /** 搜索文本 */
  searchText?: string;
  
  /** 供应商类型 */
  supplierType?: string;
  
  /** 供应商状态 */
  supplierStatus?: string;
  
  /** 页码 */
  pageIndex: number;
  
  /** 页大小 */
  pageSize: number;
}

/**
 * 项目查询参数类型
 */
export interface ProjectQueryParams {
  /** 搜索文本 */
  searchText?: string;
  
  /** 项目状态 */
  projectStatus?: string;
  
  /** 类别 */
  category?: string;
  
  /** 页码 */
  pageIndex: number;
  
  /** 页大小 */
  pageSize: number;
}

/**
 * 生产物品中间表类型定义
 */
export interface SaleProductionItemsCommand {
  /** 中间表ID */
  id?: number;
  
  /** 委外加工ID */
  outsourcingProcessing: number;
  
  /** 生产物品ID */
  produceId: number;
  
  /** 计划生产数量 */
  plannedproduction: number;
  
  /** 备注 */
  remark?: string;
}

/**
 * 消耗物品中间表类型定义
 */
export interface SaleDepleteCommand {
  /** 中间表ID */
  id?: number;
  
  /** 委外加工ID */
  outsourcingProcessing: number;
  
  /** 消耗物品ID */
  depleteId: number;
  
  /** 仓库ID */
  warehouseId: string;
  
  /** 计划消耗数量 */
  plannedquantity: number;
  
  /** 主单位数量 */
  number: number;
  
  /** 备注 */
  remark?: string;
}

/**
 * API响应类型
 */
export interface ApiResponse<T> {
  /** 响应代码 */
  code: string;
  
  /** 响应消息 */
  message: string;
  
  /** 响应数据 */
  data: T;
}

/**
 * 分页响应类型
 */
export interface PageResponse<T> {
  /** 总记录数 */
  totalCount: number;
  
  /** 总页数 */
  pageCount: number;
  
  /** 当前页数据 */
  pageData: T[];
}
